/**
 * 为什么使用Reflect而不是直接赋值或取值
 * 1.语义化 通过方法名可以非常方便的清晰知道要干啥
 * 2.兼容性 未来此方法基本不会修改功能 Reflect.get(obj,'key') obj.key = xxx
 * 3.保证代码健壮性
 */
'use strict'
const obj = {
    name:"vue"
}
obj.name = 'react';

Object.defineProperty(obj,'age',{
    value:18,
    writable:false//不可修改
});
//此操作并没有功能，也无法判断是否成功
//TypeError: Cannot assign to read only property 'age' of object '#<Object>'
//在严格模式下，还会抛出异常
//obj.age = 20;
console.log(obj.age)
//Reflect的set方法是可以通过返回值来判断赋值是否成功的
let isSuccess = Reflect.set(obj,'age',20);
console.log(isSuccess)